package com.liu.Lamda_study;

/**
 * 学习java8  lamda表达式
 */
public class LamdaDemo {

    /**
     * 静态内部类
     */
    static class lamdaText2 implements lamdaClass {
        public void lamdaMethod() {
            System.out.println("其次我们还可以使用静态类实现");
        }
    }

    public static void main(String[] args) {
        /**
         * 局部内部类
         */
        class lamdaText3 implements lamdaClass {
            public void lamdaMethod() {
                System.out.println("其次我们还可以使用局部内部类实现");
            }
        }


        lamdaClass lamdaClass = new lamdaText();
        lamdaClass.lamdaMethod();
        lamdaClass = new lamdaText2();
        lamdaClass.lamdaMethod();
        lamdaClass = new lamdaText3();
        lamdaClass.lamdaMethod();
        /**
         * 匿名内部类
         */
        lamdaClass = new lamdaClass() {
            public void lamdaMethod() {
                System.out.println("匿名内部类-------");
            }
        };
        lamdaClass.lamdaMethod();

        /**
         * 函数式接口  接口中只有一个抽象方法
         */
        lamdaClass = () -> {
            System.out.println("这就是lamda表达式");
        };
        lamdaClass.lamdaMethod();
        /**
         * 传参数----
         */
        lamdaClassParam lamdaClassParam = null;
        lamdaClassParam = (a) ->{
            System.out.println("参数传递"+a);
        };
        lamdaClassParam.lamdaMethod(12);
    }
}

interface lamdaClass {
    void lamdaMethod();
}
interface lamdaClassParam {
    void lamdaMethod(Integer num);
}

class lamdaText implements lamdaClass {

    public void lamdaMethod() {
        System.out.println("最初的方式是实现接口方法");
    }
}